Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
ember-cli-node-assets
Advanced tools
Include CSS, images and other assets in your app or addon directly from node modules
Incorporate stylesheets, images, globals-style scripts and other assets directly from node modules into your Ember app or addon.
In an application's ember-cli-build.js
:
var app = new EmberApp(defaults, {
nodeAssets: {
// node asset options
}
});
In an addon's index.js
:
module.exports = {
name: 'my-addon',
options: {
nodeAssets: {
// node asset options
}
}
}
Each key in the nodeAssets
hash corresponds to the name of a node module you want to include assets from. For example, the dummy app in this repo uses slick-carousel as a proof of concept and has the following configuration:
nodeAssets: {
'slick-carousel': {
srcDir: 'slick',
import: ['slick.js', 'slick.css', 'slick-theme.css'],
public: ['ajax-loader.gif', 'fonts/*']
}
}
Each key should contain a hash of the configuration for the corresponding module, with the options specified below. All configured paths are relative to that module's directory within the consuming app or addon's node_modules
directory.
If your required assets depend on runtime configuration (e.g. if you have an addon with configurable theme support), you may specify a function that returns a configuration hash.
nodeAssets: {
'some-node-module': function() {
// Within this function, `this` refers to your app or addon instance
return {
import: ['js/widget.js'],
public: ['css/widget-theme-' + this.addonOptions.theme + '.css']
};
}
}
For addons, you'll want to make sure this configuration is available before your base included()
hook is invoked. For instance, you might do something like:
included: function(parent) {
this.addonOptions = parent.options && parent.options.myAddon || {};
this.addonOptions.theme = this.addonOptions.theme || 'light';
this._super.included.apply(this, arguments);
}
Assets that should be imported into your app or addon's vendor.js
or vendor.css
can be configured via a hash under the import
key. Options:
include
: an array of files that should be imported and concatenated into the served JS or CSS files. Each file may be:
path
: the location of the file (required)sourceMap
: the location of an existing sourceMap for that file (optional)app.import
, like type: 'test'
or prepend: true
(optional)srcDir
(optional): the source directory (relative to the module's directory) from which files should be includedprocessTree
(optional): a function to perform any necessary processing on the Broccoli tree containing the given files before they are importedNote that you may pass an array of strings as the value for import
instead of a hash as a shorthand for only specifying an include
property, as in the usage example above.
Assets that do not get built into the application itself but rather must be publicly available (e.g. images or webfonts) can be configured via a hash under the public
key. Options:
include
: an array of strings representing the files to be included in the public
directory. Note that unlike with imported files, these strings may be path globssrcDir
(optional): the source directory (relative to the module's directory) from which files should be includeddestDir
(optional): the location in dist
where your public assets will be placed. Defaults to assets
.processTree
(optional): a function to perform any necessary processing on the Broccoli tree containing the given files before they are moved into dist
Note that you may pass an array of strings as the value for public
instead of a hash as a shorthand for only specifying an include
property, as in the usage example above.
If your public and imported assets share a common source directory (e.g. dist
or build
), you may specify that as srcDir
on the root configuration hash for the module, as in the usage example above.
If you have a module that you'd only like to include in certain situations, like an error reporting library you only want in production builds, you can include an enabled
flag in the configuration for that model.
nodeAssets: {
'bug-reporter': {
enabled: EmberApp.env() === 'production',
import: ['bug-reporter.js']
}
}
FAQs
Include CSS, images and other assets in your app or addon directly from node modules
We found that ember-cli-node-assets demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.